Computer applications use databases to store information. A database typically includes a sophisticated set of software functions, often referred to as a database management system (DBMS), that enable a user to define and create the database, update and query the database, and otherwise maintain the database. Databases offer security and ensure that updates are atomic, durable, and consistent, but often at the cost of complexity. It is not unusual for a business to employ full-time database specialists to maintain the business' databases. Application providers may desire to use a database to store critical data, such as configuration data, but do not want to require a customer to incur additional support costs associated with maintaining complex database software, or, in some cases, even be aware that an application is using a particular DBMS. Thus, application providers may desire the benefits of a DBMS, but desire to shield their customers from the complexity associated with a DBMS.
Certain applications are designed to operate cooperatively over a network in a distributed manner. For example, a telecommunications system may involve a number of data servers networked together in a cluster. Each server in the cluster communicates with other servers in the cluster. Each server may have an associated database in which information, such as configuration information, is maintained. Information maintained in the database may relate to an individual server, such as a hostname or Internet Protocol (IP) address, or may be common to each server on the network, such as whether the servers implement simple network management protocol (SNMP). It is not unusual in distributed systems for one server to be identified as a master or primary server, and the remaining servers to be designated as slave or secondary servers. Certain configuration changes made to the primary server may be required to be made to each of the secondary servers. Ideally, each time such a configuration change is made to a primary server, the appropriate configuration change will be made to the secondary servers without human involvement. While most modern DBMSs today have certain capabilities for propagating data among distributed databases, such as via database replication, implementing and maintaining replicated databases can require significant expertise. Moreover, replication increases the complexity of restoring a corrupted database or adding a new secondary database to a cluster, does not allow selective updating of secondary databases, and requires that each database be from the same DBMS vendor. Thus, there is a need for a mechanism for replicating database information among distributed databases that does not require significant database expertise from a customer, that is reliable and works in a multi-vendor environment, and that enables selective replication over a distributed network substantially simultaneously.